package br.com.affero.testewel.util;


import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;


/**
 * Classe Utilitária para acesso aos serviços oferecidos pelo Doctrine.
 *  
 * Esta classe utiliza o padrão de projeto Singleton
 * @see http://c2.com/cgi/wiki?SingletonPattern  
 *  
 *  
 * @author Welington Veiga
 * @since 20/12/2011 
 *
 */
public class HibernateUtil {


	final private Session session;
	
	
	/**
	 * Instância única
	 */
	private static HibernateUtil instance;
	
	public static HibernateUtil getInstance(){
		// Vamos construir caso não exista o/
		if(instance == null)
			instance = new HibernateUtil();
		
		return instance;
	}
	    
	/**
	 * Construtor privado.
	 */
	private HibernateUtil(){
		final SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
		session = sessionFactory.openSession();
	}

	public Session getSession(){
		return session;
	}
}
